#include "simplethreadone.h"
#include <QDebug>
#include "myqmlclass.h"
#include "datastruct.h"
#include <QTimer>


extern int glabal_value;
extern MyQmlClass myQmlImp;

extern int scp_torpedsim_timer_5ms;
extern int scp_torpedsim_timer_10ms;

// 声明数据结构体
QList<Student> students;
// 对数据结构体进行初始化
QList<Student> DataInit(QList<Student> students, int n);
void scp_torpedsim_exect_5ms();
void scp_torpedsim_exect_10ms();

SimpleThreadOne::SimpleThreadOne()
{

}

// 线程执行
void SimpleThreadOne::run()
{
    QList<Student> students;
    students = DataInit(students, 10);

    qDebug()<<"SimpleThreadOne run!";

    // 总体调度框架
    while (true)
    {
        //qDebug()<<myQmlImp.m_Value;

        //sleep(2);
        //hello();

        for(int i=0; i<students.size(); ++i)
        {
            //qDebug() << students.at(i).aa;
            //helloWorld();

        }

        // 5ms 定时器分支
        if(scp_torpedsim_timer_5ms == 1)
        {
            qDebug()<<myQmlImp.m_Value;
            qDebug()<<"5ms breach execting...";
            scp_torpedsim_exect_5ms();
        }

        // 10ms 定时器分支
        if(scp_torpedsim_timer_10ms == 1)
        {
            qDebug()<<myQmlImp.m_Value;
            qDebug()<<"10ms breach execting...";
            scp_torpedsim_exect_10ms();
        }
    }
}


void SimpleThreadOne::hello(){
    qDebug()<<"hello!";
}


/*
 * 20220907 zd
  功能：初始化数据结构
  参数：QList<Student> students: 存储学生数据的结构体List
       int n: 学生的数量
*/
QList<Student> DataInit(QList<Student> students, int n){

    for(int i = 0; i < n; i++){
        Student s;

        s.axExtent = 1.1;
        s.num = 10;
        s.aa = 22;
        s.name = "ssssaaa";
        Score sc;
        sc.chinese = 1;
        sc.math = 2;
        s.score.append(sc);

        students.append(s);
    }

    return students;
}


/*
 * 20220907 zd
  功能：定时器执行函数
       当scp_torpedsim_timer_5ms=1时，执行该函数
       执行完后赋值为0
  参数：
*/
void scp_torpedsim_exect_5ms()
{
       qDebug() << "5ms timer doing.....";
       //do something

       // 标志字重新置为0
       scp_torpedsim_timer_5ms = 0;
}


/*
 * 20220907 zd
  功能：定时器执行函数
       当scp_torpedsim_timer_10ms=1时，执行该函数
       执行完后赋值为0
  参数：
*/
void scp_torpedsim_exect_10ms()
{
       qDebug() << "10ms timer doing.....";
       //do something

       // 标志字重新置为0
       scp_torpedsim_timer_10ms = 0;
}
